import { _decorator, Component, Node, Layers, UITransform, Sprite, SpriteFrame } from 'cc'
import { TILE_TYPE_ENUM } from '../Enums'
const { ccclass, property } = _decorator

export const TILE_WIDTH = 55
export const TILE_HEIGHT = 55

@ccclass('TileManager')
export class TileManager extends Component {
  type: TILE_TYPE_ENUM
  moveAble: boolean
  turnAble: boolean

  init(type: TILE_TYPE_ENUM, spriteFrame: SpriteFrame, i: number, j: number) {
    this.type = type
    if (
      this.type === TILE_TYPE_ENUM.WALL_ROW ||
      this.type === TILE_TYPE_ENUM.WALL_COLUMN ||
      this.type === TILE_TYPE_ENUM.WALL_LEFT_TOP ||
      this.type === TILE_TYPE_ENUM.WALL_RIGHT_TOP ||
      this.type === TILE_TYPE_ENUM.WALL_LEFT_BOTTOM ||
      this.type === TILE_TYPE_ENUM.WALL_RIGHT_BOTTOM
    ) {
      this.moveAble = false
      this.turnAble = false
    } else if (
      this.type === TILE_TYPE_ENUM.CLIFF_CENTER ||
      this.type === TILE_TYPE_ENUM.CLIFF_LEFT ||
      this.type === TILE_TYPE_ENUM.CLIFF_RIGHT
    ) {
      this.moveAble = false
      this.turnAble = true
    } else if (this.type === TILE_TYPE_ENUM.FLOOR) {
      this.moveAble = true
      this.turnAble = true
    }

    // 添加Sprite组件到当前节点
    const sprite = this.addComponent(Sprite)
    // 设置Sprite组件的精灵帧
    sprite.spriteFrame = spriteFrame

    // 获取当前节点的UITransform组件
    // 该组件通常用于控制UI元素的布局和位置
    // 获取并设置UITransform组件的内容大小
    const transform = this.getComponent(UITransform)
    // 设置内容大小为TILE_WIDTH和TILE_HEIGHT，这两个常量应该已经在代码的其他部分定义
    transform.setContentSize(TILE_WIDTH, TILE_HEIGHT)

    // 根据传入的索引i和j计算x和y坐标
    // 注意这里的计算方式，x坐标是索引i乘以瓦片宽度，y坐标是索引j乘以瓦片高度（但因为Cocos Creator的原点在左上角，所以使用负值）
    const x_coordinate: number = i * TILE_WIDTH
    const y_coordinate: number = -j * TILE_HEIGHT

    // 设置节点的位置为计算出的x和y坐标
    this.node.setPosition(x_coordinate, y_coordinate)
  }
}
